// === main.js ===
// 微信通知TTS朗读（自动下载模块，无悬浮窗，纯后台运行）

// === 使用私有目录，兼容所有设备 ===
const BASE_DIR = context.getFilesDir().getAbsolutePath() + "/";
const MODULE_LOCAL = BASE_DIR + "Module/ttsModule.js";

// === 创建目录（如果不存在）===
function ensureDir(path) {
    const file = new java.io.File(path);
    const parentDir = file.getParentFile();
    if (!parentDir.exists()) {
        parentDir.mkdirs();
    }
}

// === 下载文件 ===
function downloadFile(url, savePath, displayName) {
    ensureDir(savePath);
    try {
        let res = http.get(url);
        if (res.statusCode === 200) {
            files.writeBytes(savePath, res.body.bytes());
            log("✅ " + displayName + " 下载成功");
            return true;
        } else {
            log("❌ 下载失败: " + res.statusCode);
            return false;
        }
    } catch (e) {
        log("❌ 下载出错: " + e.message);
        return false;
    }
}

// === 检查文件是否存在 ===
function fileExists(path) {
    return files.exists(path);
}

// === 确保 TTS 模块存在（不存在则下载）===
function ensureTTSModule() {
    const MODULE_URL = "https://gitee.com/dalilb/tts-notification/raw/master/ttsModule.js";

    if (fileExists(MODULE_LOCAL)) {
        return true;
    }

    if (typeof http === 'undefined') {
        toast("❌ 请开启【网络】权限");
        return false;
    }

    log("📥 正在下载 TTS 模块...");
    return downloadFile(MODULE_URL, MODULE_LOCAL, "TTS语音模块");
}

// === 主程序 ===
(function () {
    log("🚀 开始运行微信TTS通知...");

    // 自动下载模块
    if (!ensureTTSModule()) {
        toast("❌ 模块下载失败，请检查网络");
        exit();
    }

    // 导入模块
    let ttsModule;
    try {
        ttsModule = require(MODULE_LOCAL);
        log("✅ TTS模块加载成功");
    } catch (e) {
        toast("❌ 模块加载失败！\n请重试或检查文件");
        log("❌ 加载错误: " + e.message);
        exit();
    }

    // 启动监听
    events.observeNotification();
    log("✅ 微信通知TTS朗读已启动，正在监听...");

    // TTS 初始化状态
    let isTTSInitialized = false;
    let isSpeaking = false;
    let notificationQueue = [];

    // 初始化 TTS
    threads.start(new java.lang.Runnable({
        run: function () {
            ttsModule.initTTS(context, function (success) {
                if (success) {
                    isTTSInitialized = true;
                    log("✅ TTS初始化成功");
                    processQueue(); // 开始处理队列
                } else {
                    log("❌ TTS初始化失败");
                }
            });
        }
    }));

    // 监听通知
    events.on('notification', function (n) {
        if (n.getPackageName() !== "com.tencent.mm") return;//如要朗读其他APP，则替换包名即可；如要朗读所有APP，则可注释/删除本行代码
        // if (n.getPackageName() == "andriod") return;//也可使用这样的格式屏蔽不必要的APP通知

        let title = n.getTitle() || "新消息";
        let text = n.getText() || "";
        log(text)
        if (!text.trim()) return;
        // 支持任意汉字 + “，[数字条]”
        text = text.replace(/^\[\d+条\]/, "").trim();

        // 过滤无意义内容
        text = text.replace(/\[图片\]|\[语音\]|\[视频\]/g, "").trim();
        if (!text) return;

        enqueueNotification(title, text);
    });

    // 入队
    function enqueueNotification(title, text) {
        notificationQueue.push({ title, text });
        processQueue();
    }

    // 处理队列
    function processQueue() {
        if (isSpeaking || notificationQueue.length === 0 || !isTTSInitialized) return;

        let item = notificationQueue.shift();
        let message = `${item.text}`;//`${item.title}，${item.text}`;想要读标题+正文，可用后方代码替换
        log("📢 开始朗读: " + message);

        isSpeaking = true;
        ttsModule.speakText(message, function () {
            log("✔️ 朗读完成: " + message);
            isSpeaking = false;
            processQueue();
        });
    }

})();